Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved Character Offsets #79

Open
wants to merge 8 commits into
base: main
Choose a base branch
from
Open

Conversation

CEliuxJV
Copy link

@CEliuxJV CEliuxJV commented Oct 10, 2024

As I mentioned earlier in an improvement request on the issues tab (FunkinCrew/Funkin#3105) (because I didn't know how to use pull requests), I improved the offsets of most characters. I’m a bit of a perfectionist, and it was uncomfortable to see that many characters didn’t have their offsets set correctly, so I tried to make them pixel-perfect myself.

Here’s an example with BF’s offsets (Video recorded in version 0.4.1):
https://github.com/user-attachments/assets/ec485f32-d182-4da7-8cf2-1b0f4d7e51c1

I also adjusted the offsets for the animations in the story mode menu for BF and Pico:
https://github.com/user-attachments/assets/7726c276-60d2-4eca-84c5-151b7f4564a0

I made a few more changes in the sprite .json files:

  • I added "hold" animations to the singing animations of BF Car, so that if an arrow key is held down, the hair animation doesn’t freeze.
  • I restored the inverted animations of Monster (as originally created by Phantom Arcade).
  • I added animations that aren’t used but are nice to have implemented, like the "hey" animation of BF Christmas, and the "hey" and "cheer" animations of Pico Dark.
  • Within the .json files, I organized several disordered animations to give more coherence across all the .json files and make it less confusing to modify things between them.
  • I removed some unnecessary animations, like two animations named "singUP" that were in the GF Pixel and BF Holding GF .json files.
  • Create a .json apart from Tankman with its animations in the direction they appear in the sprite (This is for when the option to correctly rotate the characters horizontally with their animations is added. I will leave it as a separate file in case it can help when the function is implemented)
    tankman.json

I couldn’t change the pixel characters' offsets because something changed in the pixel style, making their offsets different from the normal characters' offsets. When the animation editor is fixed (since it doesn’t work or I just don't know how to use it in the latest update), I’ll try to make the pixel character offsets pixel-perfect as well.

I also noticed that you’re planning to make the characters' animations and offsets flip horizontally along with the character sprites when selected as either the opponent or the player (FunkinCrew/Funkin#3539). For this, I recommend creating a boolean value called "characterPlayableSprite" within the characters' .json file, with a default value of false. When activated, if the character is placed in the player's spot, the sprite doesn’t flip horizontally, but it does when placed as the opponent. The inverse would happen when the value is false—if the character is the opponent, the sprite doesn’t flip, but if they’re the player, it does (this would also affect the left and right singing animations to match their position).

One way to ensure characters don't look strange in different environments (outside of their own) and to make them more compatible with all backgrounds would be to add a reference in the animation editor to show where the characters should be positioned. A reference "X" could be added at position [0, 0], and based on that "X," you could modify the character's general offset to keep it centered relative to the "X" (it would be helpful if there was a way to adjust the character’s offset, not just individual animation offsets).

@CEliuxJV
Copy link
Author

I have a few more recommendations related to these things:

  • When I was modifying the story mode offsets, I noticed that each week’s .json file sets the animations and offsets for the characters’ assets. To avoid having to do this in every .json file for each week, I recommend creating a single .json file that contains the animations and offsets for each character. The weekly .json files would just use that file to select which characters to include in each week. If it’s not possible to include all characters in a single .json file, then make a separate .json file for each character, similar to how the characters’ .json files are handled within the game.

  • It would also be nice that, once the sprites can be flipped horizontally perfectly, there’s no need to create separate playable variants of characters, like with Pico, who has both an opponent and a player variant.

  • Similarly, in the story mode menu, adjust the scale as necessary to display correctly and flip the sprite horizontally, like with Pico, so there’s no need for different sprites for his playable and opponent versions.

  • For characters with several animation sprites (such as BF, GF, Pico, Nene, Tankman, or even Skid and Pump and Senpai), it would be good to create a folder within the "characters" folder for each of them, containing all their animation sprites. This way, the characters folder won’t get cluttered with multiple sprites for different animations of the same character.

  • It would also be helpful to combine some sprite sheets at some point to reduce the number, like Pico’s singing and fail animations, or BF’s cheer animation, etc.

  • At the same time, separate certain animations, such as BF’s death animation, so they aren’t on the same sprite sheet as the base BF animations. This way, BF variants don’t have to access the entire original sprite sheet just to display the death animation.

  • Please optimize and organize the sprite sheets better. Remove large blank spaces and organize the animations more like this:
    60cd0ce381cd2
    Source of the image: https://gamebanana.com/mods/296576

P.S. Sorry for including so many recommendations. There are many things I’d like to see improved in the game for better organization (and I’m not good enough at programming to add all of this myself, sorry).

@Hundrec
Copy link
Contributor

Hundrec commented Oct 10, 2024

Thank you for working on pixel perfect offsets! It's also something I care a great deal about.

I want to mention that #39 makes adjustments to every character's offsets as well. Does this PR set to do the same thing as the other one?

@CEliuxJV
Copy link
Author

CEliuxJV commented Oct 10, 2024

I want to mention that #39 makes adjustments to every character's offsets as well. Does this PR set to do the same thing as the other one?

Oh, thanks for letting me know about that PR, I hadn’t seen it. When I started modifying the character offsets a long time ago, I only looked at the PRs for the game’s source code, and I didn’t know that the assets had their own section with their own PRs, so to speak. It was only when I was about to submit the PR that I realized this, and I completely forgot to check if this request had already been made before.

The changes I made in this PR were all related to the animation offsets and organizing the characters’ .json files a bit. I didn’t consider their in-game positions because I didn’t have a reference for all of them to align to a common position, like in request #39. That’s why I mentioned that such an implementation would be a good addition here:

One way to ensure characters don't look strange in different environments (outside of their own) and to make them more compatible with all backgrounds would be to add a reference in the animation editor to show where the characters should be positioned. A reference "X" could be added at position [0, 0], and based on that "X," you could modify the character's general offset to keep it centered relative to the "X" (it would be helpful if there was a way to adjust the character’s offset, not just individual animation offsets).

I just checked request #39, and it also changes the animation offsets, though it slightly modifies the idle animations too, and I prefer to keep them at [0, 0]. Basically, my PR does the same thing as #39, but without changing the characters' positions so they remain compatible in all stages.

I could try adjusting the offset for each character completely, as well as in each scenario file, so that everything can be 100% compatible. I would do this mainly because I think request #39 is outdated.

@EliteMasterEric EliteMasterEric added status: pending triage The bug or PR has not been reviewed yet. type: minor bug Involves a minor bug or issue. labels Oct 15, 2024
@EliteMasterEric EliteMasterEric self-assigned this Oct 16, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: pending triage The bug or PR has not been reviewed yet. type: minor bug Involves a minor bug or issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants